

BLEEPLOAD 

--------------------------------------------------------------------------------

Can be found on... Bubble Bobble, Druid, Gunstar, Headbanger, IO, Park Patrol, Sentinel, 
Thrust, Warhawk etc.. 

Note : Most Bleepload tapes contain Bleepload AND Bleepload Special!. 

--------------------------------------------------------------------------------

Threshold = $232 (562) clock cycles (TAP byte $45).
Bit 0 : $2F
Bit 1 : $5A
Endianess : MSbF 

Data is structured from sub-blocks, all consecutively numbered and there SHOULD be a short
pause in between, on many taps i looked at these pauses are often corrupted or too small 
to register as a proper pause (20,000 cycles) which causes the 1st byte of the following 
blocks pilot to be corrupted. 

Each sub-block has the following structure...

Pilot : pb (initial value is $0F, any number of them, usually 10)
Sync  : pb XOR $FF, pb. 

1 byte  : Pilot byte (pb) for next block
1 byte  : Block number (they begin at 0 and increase by 1)
2 bytes : Load address (LSBF)
n bytes : Data (default size is 256 bytes, but first block (number 0) is 64 bytes long)
1 byte  : Dummy byte count (d)
d bytes : Dummies (all ignored)
1 byte  : Checksum (XOR of all n data bytes)
2 bytes : Execution address (LSBF, CPU jumps here after block is loaded)
1 byte  : unknown. 


Notes:- 

The first block in a chain has pilot tone which is a number of bit 1's (around 2000) there 
is often corruption in this during first 100+ pulses. 

The final block of a chain appears to have an extra 8 bytes (64 pulses) at the end before 
trailing tone begins, this is actually another file type, it consists of 8 bytes and usually

Has 2040(ish) pulses of trailing tone. 

I call this small file "Bleepload Trigger". 

Structure... 

8 bytes... 

!!!! <insert structure here> !!!! 

This 8 byte file is read in when the final 'proper' block executes. it appears to be 
encrypted and is responsible for triggering some activity in the program, ie. displaying 
bitmap or starting the game. it is typically read into zero page for deciphering. 



--------------------------------------------------------------------------------
BLEEPLOAD SPECIAL 

--------------------------------------------------------------------------------

Threshold = $232 (562) clock cycles (TAP byte $45).
Bit 0 : $2F
Bit 1 : $5A
Endianess : MSbF 

Data is structured as a chain of 256 byte sub-blocks, all consecutive and without pauses 
in between. 

Each sub-block has the following structure... 

Pilot : pb (*10) (the value of 'pb' can vary between chains and tapes).
Sync  : pb XOR $FF, pb.

1 byte    : block no. (they start at 0) 
2 bytes   : load address (LSBF)
1 byte    : ignored
1 byte    : if equal to load address high +1, this is last block.
2 bytes   : execution address (LSBF)
256 bytes : data. 
1 byte    : checksum (0 XOR all 256 data bytes)

Note: You can tell the difference between "Bleepload" and "Bleepload Special" by looking at
      the 1st byte after the 'sync byte 2' if its 0 then its Bleepload Special. 

Example pb's... 

- Thrust : $50
- Park Patrol : $2A 

Notes:- 

The first block in a chain has leading tone which is a number of bit 1's (around 2000), 
it is often corrupted at the beginning. 





